package cn.stylefeng.guns.modular.gridsystem.temperature.utils;

import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.guns.modular.gridsystem.temperature.entity.BizTemperatureConfig;
import cn.stylefeng.guns.modular.gridsystem.temperature.service.BizTemperatureConfigService;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class ConfigDictUtils {
    public static List<BizTemperatureConfig> dictDatas = new ArrayList<>();

    /**
     * 获取字典键值
     * <p>
     * type=temp_error_type, lable=温度过高预警 ==> 1
     *
     * @param type  字典类型
     * @param lable 字典标签
     * @return
     */
    public static String getDicValueString(String type, String lable) {
        if (dictDatas == null || dictDatas.size() == 0) {
            init();
        }
        final List<BizTemperatureConfig> collect = dictDatas.stream().filter(x -> x.getDictLabel().equals(type)).collect(Collectors.toList());
        String value = collect.stream().
                filter(x -> x.getDictLabel().equals(lable)).findFirst().orElseGet(BizTemperatureConfig::new).getDictValue();
        return value;
    }


    /**
     * 获取字典标签
     * <p>
     * 举例： type=temp_error_type, value=1 ==>温度过高预警
     *
     * @param type  字典类型
     * @param value 字典键值
     * @return
     */
    public static String getDicLableString(String type, String value) {
        if (dictDatas == null || dictDatas.isEmpty()) {
            init();
        }
        final List<BizTemperatureConfig> collect = dictDatas.stream().filter(x -> x.getDictLabel().equals(type)).collect(Collectors.toList());
        String name = collect.stream().
                filter(x -> x.getDictValue().equals(value)).findFirst().orElseGet(BizTemperatureConfig::new).getDictLabel();
        return name;
    }

    public static void init() {
        dictDatas = SpringUtil.getBean(BizTemperatureConfigService.class)
                .lambdaQuery()
//                .eq(BizTemperatureDict::getDictType, type)
                .list();
    }


}
